import java.util.Scanner;
import java.util.Stack;

public class demo {
    // 五子棋▲▲▲▲▲
//    NowCoder最近爱上了五子棋，现在给你一个棋局，请你帮忙判断其中有没有五子连珠（超过五颗也算）。
//  输入描述:
//输入有多组数据，每组数据为一张20x20的棋盘。
//其中黑子用“*”表示，白子用“+”表示，空白位置用“.”表示。
//  输出描述:
//如果棋盘上存在五子连珠（无论哪种颜色的棋子），输入“Yes”，否则输出“No”。
    static final int n = 20;
    // 计算该位置 最长连续的棋子个数
    public static int count(char[][] map, int x, int y, char ch) {
        int[][][] direct = {
                {{-1,0}, {1,0}},//上下
                {{0,-1}, {0,1}},//左右
                {{-1,-1}, {1,1}},//左上,左下
                {{-1,1}, {1,-1}}//右上,右下
        };
        // 记录某个直线方向 最长的连珠数
        int maxCount = 0;
        for (int i=0; i<4; i++) {
            // 记录某个直线方向的连珠数
            int flag = 0;
            for (int j=0; j<2; j++) {
                // 每次forj循环开始 位置要回到原点
                int nx = x;
                int ny = y;
                // 如果一直在循环内 表示一个方向上都是该符号 *或者+
                while (nx>=0 && nx<20 && ny>=0 && ny<20 && map[nx][ny]==ch) {
                    flag++;
                    nx += direct[i][j][0];
                    ny += direct[i][j][1];
                }
                maxCount = Math.max(flag, maxCount);
            }
        }
        return maxCount - 1;// 这里要记得-1  因为在flag 原点 多加了一次
    }

    // 是否是有>=5 的连续棋子
    public static boolean isGoBang(char[][] map) {
        for (int i=0; i<n; i++) {
            for (int j=0; j<n; j++) {
                if (map[i][j]=='*' || map[i][j]=='+') {
                    if (count(map, i, j, map[i][j]) >= 5) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
    public static void main1(String[] args) {
        // 获取棋盘数据
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            char[][] map = new char[n][n];
            for (int i=0; i<n; i++) {
                String str = scanner.next();
                for (int j=0; j<n; j++) {
                    map[i][j] = str.charAt(j);
                }
            }
            if (isGoBang(map)) {
                System.out.println("Yes");
            }else {
                System.out.println("No");
            }
        }
    }

    // Emacs计算器
//Emacs号称神的编辑器，它自带了一个计算器。与其他计算器不同，它是基于后缀表达式的，即运算符在操作数的后面。
//例如“2 3 +”等价于中缀表达式的“2 + 3”。请你实现一个后缀表达式的计算器。
//  输入描述:
//输入包含多组数据。
//每组数据包括两行：第一行是一个正整数n (3≤n≤50)；紧接着第二行包含n个由数值和运算符组成的列表。
//“+-*/”分别为加减乘除四则运算，其中除法为整除，即“5/3=1”。
//  输出描述:
//对应每一组数据，输出它们的运算结果
//          输入
//      3
//      2 3 +
//      5
//      2 2 + 3 *
//      5
//      2 2 3 + *
//          输出
//      5
//      12
//      10
// 基本思路：
// 利用栈实现后缀运算。遍历表达式，若为则数字入栈，若为运算符，则栈顶元素与次栈顶元素根据运算符运算，上述两元素出栈，运算结果入栈。
// 最后栈顶元素即为后缀算术表达式的运算结果。
// 1.输入有空格，
// 2.字符串与字符不同。"a"为字符串 ‘a’为字符 即便只有一个字符的字符串也不能与字符比较。所以是判断运算符为"+" "-" "*" "/"
// 3.+和*没有操作数要求，但是-和/要求操作数保持先后关系。因为使用栈，所以对于a-b，a先入栈，b后入栈，所以栈顶元素为b，次栈顶为a
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            Stack<Integer> stack = new Stack<>();
            for (int i=0; i<n; i++) {
                String str = scanner.next();
                // 注意要考虑负数， 这题测试用例没有考虑到负数
                //if(str.charAt(i) >= '0' && str.charAt(i)<='9) error 这样写就没有考虑到负数的情况
                if (!(str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/"))) {
                    stack.add(Integer.parseInt(str));
                }else {
                    int right = stack.pop();
                    int left = stack.pop();
                    if (str.equals("+")) {
                        stack.add(left+right);
                    }else if (str.equals("-")) {
                        stack.add(left-right);
                    }else if (str.equals("*")) {
                        stack.add(left*right);
                    }else if (str.equals("/")) {
                        stack.add(left/right);
                    }
                }
            }
            System.out.println(stack.pop());
        }
    }
}
